﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Criterion;
using System.Linq.Expressions;
using Tools.Domain.Specifications;

namespace Web.App.Infrastructure.ObjectStore.Contracts
{
    public interface IObjectStoreRepository
    {
        void Add(ObjectStoreItem item);
        ObjectStoreItem Add(object data, string description);
        void Update(Guid id, object data);
        void Remove(ObjectStoreItem item);
        void Remove(Guid id);
        IEnumerable<ObjectStoreItem> Find(Func<ObjectStoreItem, bool> predicate);
        IEnumerable<ObjectStoreItem> Find(ISpecification<ObjectStoreItem> predicate);
        ObjectStoreItem Find(Guid id);

    }
}